package com.zjj.learn.javaplus.pkg02.demo25;


public class TestDemo25_1 {

    /**
     * 代码块：静态代码块【static{}】和实例代码块【{}】
     * 静态代码块：
     *   必须有 static 修饰，必须放在类下面。与类一起加载执行 {@link com.zjj.learn.javaplus.pkg02.demo25.TestDemo25_1#CS_NAME}
     *   **特点**：
     *         每次执行类，加载类的时候都会先执行静态代码块一次。
     *         静态代码块是自动触发执行的，只要程序启动静态代码块就会先执行一次【比main 方法优先执行】。
     *         作用：在启动程序之前可以做资源的初始化，一般用于初始化静态资源。
     *
     *
     * 实例代码块：
     *   没有 static 修饰，必须放在类下面。与对象初始化一起加载
     *   特点：
     *      无static修饰。属于对象，与对象的创建一起执行的。
     *      每次调用构造器初始化对象，实例代码块都要自动触发执行一次。
     *      实例代码块实际上是提取到每一个构造器中去执行的。
     *      作用：实例代码块用于初始化对象的资源。
     **/

    private static String CS_NAME = "";
    private  int age = 0;

    static {
        //静态代码块
        CS_NAME = "zjj_admin";
        System.out.println("静态代码块执行");
    }

    {
        //实例代码块，在 new 对象时才会执行
        System.out.println("实例代码块执行");
        age = 20;
    }

    public TestDemo25_1() {
        //此时实例代码块就会执行
    }

    public static void main(String[] args) {
//        System.out.println("main 方法执行");
//        System.out.println(CS_NAME);

        System.out.println("main 方法执行");
        TestDemo25_1 demo25_1 = new TestDemo25_1();
    }
}
